package com.kirk.crawler.ui.widget;

import com.kirk.crawler.utils.ImageManager;

import javax.swing.*;
import java.awt.*;
import java.net.URL;

/**
 *  <p> JSplashLabel.java </p>
 *
 * @Author      kirkliu
 * @Date        2020-08-29 22:29
 * @version     1.0.0
 * @Description 进度条工具类
 */
public final class JSplashLabel extends JLabel {
    
    /**
     * Used to draw the text string.
     */
    private String m_text = null;

    /**
     * Font to use when drawing the text.
     */
    private Font m_font = null;

    /**
     * Colour to use when drawing the text.
     */
    private Color m_color = null;
    
    
    /**
     * Constructor.
     * <p>
     * @param url   The location of the image (<b>it cannot be null</b>).
     * @param s     The string to draw (can be null).
     * @param f     The font to use (can be null).
     * @param c     The color to use (can be null).
     */
    public JSplashLabel(URL url, String s, Font f, Color c) {
        super();
        //ImageIcon icon = new ImageIcon( url );
        ImageIcon icon = ImageManager.getImageIconByShortName("splash_logo.png");
        if( icon.getImageLoadStatus()!=MediaTracker.COMPLETE ) {
            System.err.println("Cannot load splash screen: " + url);
            setText("Cannot load splash screen: " + url);
        } else {
            setIcon(icon);
            m_text = s;
            m_font = f;
            m_color = c;
            if(m_font != null) {
                setFont(m_font);
            }
        }
    }


    public JSplashLabel(ImageIcon icon, String s, Font f, Color c) {
        super();
        if( icon.getImageLoadStatus()!=MediaTracker.COMPLETE) {
            System.err.println("Cannot load splash screen");
            setText("Cannot load splash screen");
        } else {
            setIcon(icon);
            m_text = s;
            m_font = f;
            m_color = c;
            if( m_font!=null) {
                setFont( m_font );
            }
        }
    }
    

    /**
     * Overrides paint in order to draw the version number on the splash screen.
     * <p>
     * @param g     The graphics context to use.
     */
    public void paint(Graphics g) {
        super.paint(g);
        if( m_text!=null) {
            if( m_color!=null){
                g.setColor(m_color);
            }
            FontMetrics fm = g.getFontMetrics();
            int width = fm.stringWidth(m_text) + 20;
            int height = fm.getHeight();
            g.drawString(m_text, getWidth() - width, getHeight() - height);
        }
    }
    
}
